package main

import (
	"fmt"
	"log"
	"os"
)

func main() {
	// 检查命令行参数
	if len(os.Args) > 1 && os.Args[1] == "retry" {
		// 使用新的qwen3-max-preview模型配置
		config := QwenConfig{
			APIKey:      "sk-7348ae2c031147bbbe208a10e4968569",
			BaseURL:     "https://dashscope.aliyuncs.com/compatible-mode/v1",
			Model:       "qwen3-max-preview", // 使用新的模型
			Temperature: 0.3,                 // 降低温度以提高输出稳定性
		}

		htmlBasePath := "../佛大官网的html静态页面"
		outputPath := "go_cleaned_data"
		concurrency := 3 // 并发控制为3个

		processor := NewRetryProcessor(htmlBasePath, outputPath, config, concurrency)

		fmt.Println("🔥 佛山大学知识模型微调 - 失败文件重试处理器")
		fmt.Println("====================================================")
		fmt.Printf("🚀 开始使用 %s 模型重新处理失败文件...\n", config.Model)
		fmt.Printf("⚙️ 并发数: %d\n", concurrency)
		fmt.Printf("📂 数据输出路径: %s\n", outputPath)
		fmt.Println("====================================================")

		if err := processor.ProcessFailedFiles(); err != nil {
			log.Fatalf("❌ 重试处理失败: %v", err)
		}

		fmt.Println("\n🎉 失败文件重试处理完成！")
		fmt.Println("📊 请检查主数据文件是否已更新：")
		fmt.Println("   - foshan_university_go.json")
		fmt.Println("   - foshan_university_training_go.json")
		fmt.Println("   - foshan_university_rag_go.json")
		return
	}

	// 默认行为：运行原始的main程序逻辑
	// 读取配置
	config := QwenConfig{
		APIKey:      "sk-7348ae2c031147bbbe208a10e4968569",
		BaseURL:     "https://dashscope.aliyuncs.com/compatible-mode/v1",
		Model:       "qwen-flash-2025-07-28",
		Temperature: 0.5,
	}

	htmlBasePath := "../佛大官网的html静态页面"
	outputPath := "go_cleaned_data"

	cleaner := NewHTMLCleaner(htmlBasePath, outputPath, config)

	// 处理命令行参数
	maxFiles := 10   // 默认处理10个文件
	concurrency := 5 // 并发数（平衡速度与限流）

	if len(os.Args) > 1 {
		switch os.Args[1] {
		case "--full":
			maxFiles = 0 // 处理所有文件
			fmt.Println("开始处理全部文件...")
		case "--test":
			maxFiles = 5
			fmt.Println("开始测试处理(前5个文件)...")
		default:
			fmt.Println("使用方法:")
			fmt.Println("  go run *.go --full     # 处理全部文件")
			fmt.Println("  go run *.go --test     # 处理前5个文件")
			fmt.Println("  go run *.go retry      # 重试失败文件")
			fmt.Println("  go run *.go            # 默认处理前10个文件")
			return
		}
	} else {
		fmt.Println("开始默认处理(前10个文件)...")
		fmt.Println("使用 --full 处理全部文件，--test 处理前5个文件，retry 重试失败文件")
	}

	// 开始处理
	if err := cleaner.ProcessAllFiles(maxFiles, concurrency); err != nil {
		log.Fatalf("处理失败: %v", err)
	}

	fmt.Println("🎉 Go版本LLM数据清洗完成！")
}